package com.yuyang.wifi.utils.network;

import android.content.Context;
import android.content.Intent;
import android.text.TextUtils;

import com.yuyang.wifi.activitys.login.WeChatLoginActivity;
import com.yuyang.wifi.base.AppManager;
import com.yuyang.wifi.base.BaseResult;
import com.yuyang.wifi.constant.AppConstant;
import com.yuyang.wifi.utils.NetworkUtils;
import com.yuyang.wifi.utils.SpUtil;
import com.yuyang.wifi.utils.ToastUtils;
import com.yuyang.wifi.utils.UserDataHelper;
import com.umeng.analytics.MobclickAgent;

import java.io.IOException;

import retrofit2.adapter.rxjava.HttpException;


/**
 * Created by ttr01 on 2016/7/25.
 */

public class HttpErrorHandlerImp implements HttpErrorHandler {

    private Context context;

    public HttpErrorHandlerImp(Context context) {
        this.context = context;
    }


    @Override
    public void onHttpError(BaseResult result) {
        String msg = result.getErrorMessage();
        if (!TextUtils.isEmpty(msg)) {
            ToastUtils.showShortToast(context, msg);
            //token失效
            if (result.getResultCode() == 3) {
                SpUtil.saveOrUpdate(AppConstant.KEY_TOKEN, "");
                SpUtil.saveOrUpdate(AppConstant.KEY_USER_ID, "");
                UserDataHelper.clearUserData();
                AppManager.getInstance().finishAllActivity();
                Intent intent = new Intent(context, WeChatLoginActivity.class);
                context.startActivity(intent);
            }
        } else {
            ToastUtils.showShortToast(context, "错误代码:" + result.getResultCode());
            ToastUtils.showShortToast(context, "出小差了，请稍等哦~");
        }
    }

    @Override
    public void onHttpException(Throwable e) {
        e.printStackTrace();
        if (!NetworkUtils.isConnected(context)) {
            ToastUtils.showShortToast(context, "当前无可用的网络连接\n请打开手机网络开关");
            return;
        }
        MobclickAgent.reportError(context, e);//应用自己捕获了错误，需要手动上传到【友盟+】服务器
        if (e instanceof HttpException) {
            HttpException e1 = (HttpException) e;
            //ToastUtils.showShortToast(context, String.format("Code %s\n请检查网络连接并重试", e1.code()));
            //ToastUtils.showShortToast(context, "请检查网络连接并重试哦~");
        } else if (e instanceof IOException) {
            //ToastUtils.showShortToast(context, e.getClass().getSimpleName() + "\n请检查网络连接并重试");
            // ToastUtils.showShortToast(context, "请检查网络连接并重试~");

        } else {

            //ToastUtils.showShortToast(context, "出小差了，请稍等哦~" + e.getMessage());
        }

    }
}
